const express = require('express');
const router = express.Router();
const validator = require('validator');
const License = require('../models/license');
var { exec } = require('child_process');
const getJSONData = require('../utils/json')

/**
 *  @description 获取所有的激活码列表
 */
router.get('/list', function (request, response, next) {
  // 查询所有的激活码
  License.find((err, res) => {
    if (!err) {
      // 操作成功
      response.json(getJSONData(200, res, '查询用户信息成功', ''));
    } else {
      // 操作失败
      response.json(getJSONData(201, '', '查询用户信息失败', err));
    }
  });
});

/**
 *  @description 获取所有的激活码列表
 *  @argument userId(用户ID)
 *  @returns JSONArray
 */
router.get('/license/:userId', function(request, response, next) {
  // 获取用户ID
  let userId = request.params.userId; // 地址栏的ID
  let id = request.query.id; // 参数传递的ID
  let type = request.query.type; // 参数传递的类型
  let params = {
    _id: id
  }
  if (type == 1) { // 如果是1则为查询该用户的所有激活码
    params = {
      userId: id
    }
  }
  // 根据用户ID查询该用户的所有激活码记录
  License.find(params, (err, res) => {
    if (!err) {
      response.json(getJSONData(200, res, '查询激活码信息成功', ''));
    } else {
      response.json(getJSONData(201, '', '查询激活码信息失败', err));
    }
  });
});

/**
 *  @description 添加激活码信息
 *  @argument formData(激活码信息)
 *  @returns JSON
 */
router.post('/license', function(request, response, next) {
  let radiuscode, licensecode;
  // 公司名称
  let company = request.body.company;
  // 序列号
  let sourcecode = request.body.sourcecode;
  // 用户ID
  let userId = request.cookies.vue_admin_template_token;
  // 最大用户数
  let maxusers = request.body.maxusers;
  // 过期时间
  let expiredate = request.body.expiredate;
  
  // 执行激活脚本，返回参数后存入数据库
  const cmdval = '/home/license-api/CWLicensePara ' + sourcecode + ' ' + maxusers + ' ' + expiredate;
  // 执行脚本
  exec(cmdval, function (error, stdout, stderr) {
    if (error) {
      response.json(getJSONData(201, '', '输入的序列号/最大用户数/时间格式不正确', ''));
    } else {
      stdout = stdout.replace(/^\"|\"$/g,'').replace(/[\r\n]/g,"");

      const xxx = JSON.parse(JSON.stringify(stdout));
      console.log(xxx.data);
      
      response.json(getJSONData(200, xxx, '查询激活码信息成功', ''));
    }
  })
  return false;
  // 封装License
  const license = new License({ company, sourcecode, radiuscode, licensecode, maxusers, expiredate, userId });

  // 保存激活码操作
  license.save((err, res) => {
    if (!err) {
      response.json(getJSONData(200, res, '添加激活码信息成功', ''));
    } else {
      response.json(getJSONData(201, '', '添加激活码信息失败', err));
    }
  });
});

/**
 *  @description 删除激活码信息
 *  @argument licenseId(激活码ID)
 *  @returns JSON
 */
router.get('/license/delete/:id', function(request, response, next) {
  // 获取用户ID
  let id = request.params.id;
  // 删除操作
  License.findByIdAndRemove({_id: id}, (err, res) => {
    if (!err) {
      response.json(getJSONData(200, res, '删除激活码信息成功', ''));
    } else {
      response.json(getJSONData(201, '', '删除激活码信息失败', err));
    }
  });
});

router.get('/license/xxx/xxx', function (request, response, next) {
  let str = {err_code: 200, err_msg: 'OK', data: {source_code: '12345678876543211234567887654321', radius_code: '72813409f839dd096f6ad9753a3bb03f', license_code: '60;5621;e<6?ef3=3`7cg=232c0fg62d8656:03647313', max_users: '200', expire_date: '20211230'}};
  console.log(str);
  response.json(str);
})

module.exports = router;
